/************************************************************************/
/*Copyright (c) James Zhao 2007,2008
/*This file is part of AdminOverlay.
/*AdminOverlay is free software: you can redistribute it and/or modify
/*it under the terms of the GNU General Public License as published by
/*the Free Software Foundation, either version 3 of the License, or
/*(at your option) any later version.
/*
/*AdminOverlay is distributed in the hope that it will be useful,
/*but WITHOUT ANY WARRANTY; without even the implied warranty of
/*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
/*GNU General Public License for more details.
/*
/*You should have received a copy of the GNU General Public License
/*along with Foobar.  If not, see <http://www.gnu.org/licenses/>.                                                                     */
/*************************************************************************/
#pragma once
#include "uipanel.h"
#include "GraphicsKit.h"
#include "debug.h"

enum UIButtonState
{
	UIButtonState_Hovering,
	UIButtonState_Pressed,
	UIButtonState_Normal
};

class EXPORT_UIKIT UIButton :
	public UIPanel
{
	Q_OBJECT
public:
	using UIPanel::NeedUpdate;
	UIButton(int x = 0, int y = 0, int width = 0, int height = 0);
	~UIButton(void);
	void onDeviceReset();
	void draw(LPDIRECT3DDEVICE9 device);
	void layout(QPoint pt);
public:
	UIButtonState State() const;
	void State(UIButtonState val);

public slots:
	void onMouseMove(QPoint point, bool isMouseDown, bool isPrimaryTarget);
	void onMouseDown(QPoint point, bool isPrimaryTarget);
	void onMouseUp(QPoint point, bool isPrimaryTarget);
	void NeedUpdate(bool val);
private:
	UIButtonState state;
	LineBuffer *lineBuffer;
	LineVisual *borderTop;
	LineVisual *borderBottom;
	LineVisual *borderLeft;
	LineVisual *borderRight;
private:
	bool stateChanged;

};
